package com.gitee.zjbqdzq.entity;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.util.List;

@Setter
@Getter
@ToString
public class TrackInfoResult implements Serializable {
    private Integer ret;

    private Object data;

    private String msg;

    private TrackInfo trackInfo;

    private AlbumInfo albumInfo;

    private Boolean hasAlbumRealFinished;

    private Integer version;

    @Setter
    @Getter
    @ToString
    public static class TrackInfo implements Serializable {
        private Integer headSkip;

        private Boolean hasShqAuthorized;

        private Boolean isDraft;

        private Integer type;

        private Boolean isRichAudio;

        private String coverSmall;

        private Long createdAt;

        private Boolean isAuthorized;

        private Boolean isFree;

        private Boolean isVipFree;

        private Boolean isXimiUhqTrack;

        private Integer vipFirstStatus;

        private Integer likes;

        private Integer vipFreeType;

        private String coverMiddle;

        private Integer trackId;

        private Boolean isXimiUhqAuthorized;

        private Integer playtimes;

        private List<PlayUrlList> playUrlList;

        private Integer paidType;

        private Boolean isPaid;

        private Boolean hqNeedVip;

        private RecommendSkip recommendSkip;

        private Integer status;

        private Integer offlineVisibleType;

        private Boolean isLike;

        private Integer processState;

        private Boolean childAlbumInWhiteList;

        private Long permissionExpireTime;

        private String title;

        private Integer sampleDuration;

        private String categoryName;

        private Integer authorizedType;

        private Integer shares;

        private Integer duration;

        private Integer uid;

        private String permissionSource;

        private String nickname;

        private Boolean isPublic;

        private String coverLarge;

        private Integer comments;

        private Integer tailSkip;

        private Integer userSource;

        private Boolean isVideo;

        private Boolean isAntiLeech;

        private Integer ximiFirstStatus;

        private Boolean isEnjoying;

        private String videoCover;

        private Integer categoryId;

        @Setter
        @Getter
        @ToString
        public static class PlayUrlList implements Serializable {
            private Boolean huaweiSound;

            private Long uploadId;

            private Integer fileSize;

            private Integer width;

            private String type;

            private Integer sampleSize;

            private Integer qualityLevel;

            private Integer version;

            private String url;

            private Integer height;

        }

        @Setter
        @Getter
        @ToString
        public static class RecommendSkip implements Serializable {
            private Integer recommendHeadTailCount;

            private Integer recommendHeadSkip;

            private Integer recommendHeadTail;

            private Integer recommendHeadSkipCount;

        }
    }

    @Setter
    @Getter
    @ToString
    public static class AlbumInfo implements Serializable {
        private Integer vipFreeType;

        private Boolean isPaid;

        private Integer freeListenStatus;

        private Integer albumType;

        private Integer offlineType;

        private Boolean isAutoBuy;

        private Integer albumId;

        private Boolean isPodcastAlbum;

        private String title;

        private String coverLarge;

        private Integer ageLevel;

        private Integer status;

    }
}
